おはこんばんにちは。最近会社のPCにAnacondaを入れてもらいました。業務で使用することはないのですが、ワークショップで使用するので色々勉強しています。以前、Googleが提供しているEarth Engineから衛星画像を取得して解析した際にPythonを使用しましたが、今回はPythonから様々なデータが取得できるpandas_datareaderを使用したいと思います。
なお、このブログではRstuioとblogdownパッケージ、gitを組み合わせてgithub上に記事を投稿しています。ですが、Rstudioとreticulateパッケージのおかげで、pythonを使用した記事もrmdで作成し、htmlとして出力できています。ここでまず、reticulateパッケージを用いてconda仮想環境へ接続する方法を紹介しておきます。
library(reticulate)
conda_path <- "C:\\Users\\hoge\\Anaconda3\\envs\\環境名"
use_condaenv(conda_path)
これで接続できます。conda_pathには仮想環境へのパスを入力してください。
import sys
sys.version
## '3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]'
import pandas as pd
from matplotlib import pyplot as plt
import pandas_datareader.data as web
from datetime import datetime
import seaborn as sns
import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = 'C:/Users/aashi/Anaconda3/envs/financialtech/Library/plugins/platforms'
start = datetime(1980,1,1)
end = datetime(2019,12,31)
# parameters for data from econdb
country = ['US','BR']
indicator = ['RGDP','CPI','URATE','CA','HOU','POP','RETA','IP']
# Parse API from econdb
econ = pd.DataFrame()
for cnty in country:
temp2 = pd.DataFrame()
for idctr in indicator:
temp = web.DataReader('ticker=' + idctr + cnty,'econdb',start,end)
temp.columns = [idctr]
temp2 = pd.concat([temp2,temp],join='outer',axis=1)
temp2 = temp2.assign(kuni=cnty,kijyundate=temp2.index)
econ = pd.concat([econ,temp2],join='outer')
econ = econ.reset_index(drop=True)
sns.set
## <function set at 0x00000000263D18B8>
sns.relplot(data=econ,x='kijyundate',y='IP',hue='kuni',kind='line')
## <seaborn.axisgrid.FacetGrid object at 0x000000002B042648>
##
## C:\Users\aashi\Anaconda3\envs\financialtech\lib\site-packages\pandas\plotting\_matplotlib\converter.py:103: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.
##
## To register the converters:
## >>> from pandas.plotting import register_matplotlib_converters
## >>> register_matplotlib_converters()
## warnings.warn(msg, FutureWarning)
plt.show()